import axios from 'axios'

const api = axios.create({
    baseURL: '/',
    timeout: 60000 // 60秒超时时间，因为OCR和问答可能需要较长处理时间
})

// 请求拦截器
api.interceptors.request.use(
    config => {
        return config
    },
    error => {
        return Promise.reject(error)
    }
)

// 响应拦截器
api.interceptors.response.use(
    response => {
        const res = response.data
        if (res.code !== 200) {
            // 401错误特殊处理，提示用户
            if (res.code === 401) {
                console.error('访问受限：', res.msg || '无权限访问此接口');
            }
            return Promise.reject(new Error(res.msg || res.message || '请求失败'))
        } else {
            return res
        }
    },
    error => {
        if (error.response) {
            console.error('请求错误:', error.response.status, error.response.data);
        } else {
            console.error('请求错误:', error.message);
        }
        return Promise.reject(error)
    }
)

export default {
    // OCR识别 - 上传图片
    uploadImageForOcr(formData) {
        return api.post('/api/ocr/recognize', formData)
    },

    // 问答服务 - 上传图片并提问
    askQuestionWithImage(formData) {
        return api.post('/api/chat', formData)
    },

    // 流式聊天服务 - 使用fetch API处理流式响应
    async streamChat(request) {
        const response = await fetch('/api/chat', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
            },
            body: JSON.stringify(request),
        });

        if (!response.ok) {
            throw new Error(`HTTP错误! 状态: ${response.status}`);
        }

        return response;
    }
} 